// openaiClient.ts
import OpenAI from "openai";

/**
 * 调用 OpenAI 接口获取文本回复
 * @param apiKey - OpenAI API 密钥
 * @param model - 模型名称，如 'gpt-4o', 'gpt-3.5-turbo' 等
 * @param baseURL - 模型url
 * @param prompt - 用户输入的提示词
 * @param systemMessage - 可选：系统角色消息（默认为通用助手）
 * @returns 返回生成的文本内容（string），出错时抛出错误
 */
export async function callOpenAI(
  apiKey: string,
  model: string,
  url: string,
  prompt: string,
  systemMessage: string = "你是一个乐于助人的助手。"
): Promise<string> {
  const openai = new OpenAI({
    apiKey: apiKey,
    baseURL: url,
    dangerouslyAllowBrowser: true, // 仅在必要时（如浏览器环境）启用，Node.js 中可省略
  });

  try {
    const completion = await openai.chat.completions.create({
      model: model,
      messages: [
        { role: "system", content: systemMessage },
        { role: "user", content: prompt },
      ],
      temperature: 1.0,
      max_tokens: 8192,
    });

    const content = completion.choices[0]?.message?.content?.trim();
    if (content === undefined) {
      throw new Error("OpenAI 返回内容为空");
    }

    return content;
  } catch (error) {
    console.error("调用 OpenAI 失败:", error);
    throw error; // 向上层抛出错误，便于调用方处理
  }
}
